home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
PROGRAMM
/
DB_CLIPP
/
H245.ZIP
/
NFSRC21.ZIP
/
RAND1.PRG
< prev
next >
Wrap
Text File
|
1991-08-16
|
2KB
|
83 lines
/*
* File......: RAND1.PRG
* Author....: Gary Baren
* CIS ID....: 75470,1027
* Date......: $Date: 15 Aug 1991 23:04:30 $
* Revision..: $Revision: 1.2 $
* Log file..: $Logfile: E:/nanfor/src/rand1.prv $
*
* This is an original work by Gary Baren and is hereby placed in the
* public domain.
*
* Modification history:
* ---------------------
*
* $Log: E:/nanfor/src/rand1.prv $
*
* Rev 1.2 15 Aug 1991 23:04:30 GLENN
* Forest Belt proofread/edited/cleaned up doc
*
* Rev 1.1 14 Jun 1991 19:52:46 GLENN
* Minor edit to file header
*
* Rev 1.0 07 Jun 1991 23:03:38 GLENN
* Initial revision.
*
*/
/* $DOC$
* $FUNCNAME$
* FT_RAND1()
* $CATEGORY$
* Math
* $ONELINER$
* Generate a random number
* $SYNTAX$
* FT_RAND1( <nMax> ) -> nRand
* $ARGUMENTS$
* <nMax> Maximum limit of value to be produced.
* $RETURNS$
* nRand is a random number between 0 (inclusive) and <nMax> (exclusive).
* $DESCRIPTION$
* Generates a non-integer random number based on the Linear
* Congruential Method.
*
* If you need a random number between 1 and <nMax> inclusive, INT()
* the result and add 1.
*
* If you need a random number between 0 and <nMax> inclusive,
* then you should ROUND() the result.
* $EXAMPLES$
* nResult := INT( FT_RAND1(100) ) + 1 // 1 <= nResult <= 100
* nResult := ROUND( FT_RAND1(100), 0 ) // 0 <= nResult <= 100
* nResult := FT_RAND1( 1 ) // 0 <= nResult < 1
* $END$
*/
#ifdef FT_TEST
// Write 100 random numbers from 1 to 100 to stdout.
// Run it multiple times and redirect output to a file
// to check it
function main()
local x
for x := 1 to 100
outstd( int( ft_rand1(100) ) )
outstd( chr(13) + chr(10) )
next
return nil
#endif
function ft_rand1(nMax)
static nSeed
local m := 100000000, b := 31415621
nSeed := iif( nSeed == NIL, seconds(), nSeed ) // init_seed()
return( nMax * ( ( nSeed := mod( nSeed*b+1, m ) ) / m ) )